// 通过网页显示 文件或者是目录
const http = require("http");
const fs = require("fs");
const url = require("url");

function removeDir(src) {
    // 先删除 src 里的文件 ；
    // 读取 src里的内容
    let arr = fs.readdirSync(src);
    //    arr  ----> [1.txt,2.txt]
    //    console.log(arr);
    // 先要判断里面是文件还是目录，如果是文件 就删除掉
    // 如何判断是一个文件： 注意路径需要拼接 ；
    arr.forEach(item => {
        // item ----->  1.txt  和 2.txt
        // 判断是否是一个文件 ，如果是文件就删除；
        let url = src + "/" + item;  // 路径需要拼接 拼接上src路径
        // console.log(url);
        // console.log("item",item);
        let stat = fs.statSync(url);  // 获取  ./mydir/1.txt 和  ./mydir/2.txt的详细信息
        // console.log(stat);
        // 通过详细信息判断是否是一个文件；
        if (stat.isFile()) {
            // 是一个文件，把文件删除 
            fs.unlinkSync(url);
        } else {
            // 是一个目录
            console.log(url); // ./mydir/mytest
            removeDir(url)
        }
    })

    // 文件删除完成之后再删除 外层目录
    fs.rmdirSync(src);
}



let server = http.createServer((req, res) => {
    res.setHeader("content-type", "text/html;charset=utf-8");







    // 接收path参数
    let query = url.parse(req.url, true).query;


    // 通过 del参数判断是否需要删除内容

    if (typeof query.del !== "undefined") {
        // 证明有这个参数 ，那么需要删除这个参数里的路径
        // 判断是否被删除 ，如果没有删除 ，才删除内容
        if (fs.existsSync(query.del)) {
            // 区分是文件还是目录
            let stat = fs.statSync(query.del);
            if (stat.isFile()) {
                // 针对文件的删除
                fs.unlinkSync(query.del);
            } else {
                // 是一个目录
                removeDir(query.del);
            }
        }
    }
    let myurl;
    if (typeof query.path !== "undefined") {
        myurl = query.path; // myurl = ./mytest
    } else {
        myurl = ".";  // 获取同级的文件或者是目录
    }

    let arr = fs.readdirSync(myurl);

    let tableStr = "<table><tr><th>文件名</th><th>操作</th></tr>";

    arr.forEach(item => {
        // 判断，如果是目录 ，那么给a连接跳转；
        let resurl = myurl + "/" + item;
        let stat = fs.statSync(resurl);
        if (stat.isDirectory()) {
            // 是目录
            tableStr += `<tr><td><a href="/?path=${resurl}">${item}</a></td><td><a href="/?del=${resurl}">删除</a></td></tr>`;
        } else {
            // 是文件
            tableStr += `<tr><td>${item}</td><td><a href="/?del=${resurl}">删除</a></td></tr>`;
        }

    })
    tableStr += "</table>";
    res.write(tableStr);
    res.end();
})

server.listen(8080);
